package com.example.d6_homework.homework01;

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        // 需求：有4个人参加公务员考试,考试成绩如图所示,录取3名学生,淘汰分数最低的一名
        // 1.定义一个集合对象,存储学生的数据
        List<Student> students = new ArrayList<>();
        // 2.添加学生数据
        students.add(new Student(1, "小亮", 99));
        students.add(new Student(2, "小勇", 85));
        students.add(new Student(3, "小响", 90));
        students.add(new Student(4, "小强", 89));

        // 使用steam流实现 先对集合进行排序,然后对集合进行截取,截取前3名,然后遍历集合,打印录取的学生信息,这样一步搞定
        students.stream().sorted(((o1, o2) -> o2.getScore() - o1.getScore())).limit(3)
                .forEach(student -> System.out.println("录取的学生编号为:" + student.getId() + ",姓名为:" + student.getName() + ",分数为:" + student.getScore()));

        // 3.记录成绩最低学生的的索引
        int index = 0;
        // 4.定义变量接收集合中第一个学生的成绩
        int score = students.get(0).getScore();
        // 6.遍历集合,获取每个学生的成绩,如果当前成绩比记录的最小成绩小,则更新索引和最小成绩
        for (int i = 0; i < students.size(); i++) {
            // 取出当前的学生成绩
            int data = students.get(i).getScore();
            // 7.如果第一个学生的成绩大于当前学生的成绩,说明当前学生成绩更小,则更新索引和最小成绩
            if (score > data) {
                score = data;
                index = i;
            }
        }
        // 8.当循环结束后index中存储的就是分数最低的那个人的索引,删除即可
        students.remove(index);

        // 9.遍历集合,打印录取的学生信息
        students.forEach(student -> System.out.println("录取的学生编号为:" + student.getId() + ",姓名为:" + student.getName() + ",分数为:" + student.getScore()));
    }
}
